.Dd $Mdocdate: February 23 2015 $
.Dt BN_CTX_NEW 3
.Os
.Sh NAME
.Nm BN_CTX_new ,
.Nm BN_CTX_init ,
.Nm BN_CTX_free
.Nd allocate and free BN_CTX structures
.Sh SYNOPSIS
.In openssl/bn.h
.Ft BN_CTX *
.Fo BN_CTX_new
.Fa void
.Fc
.Ft void
.Fo BN_CTX_free
.Fa "BN_CTX *c"
.Fc
.Pp
Deprecated:
.Pp
.Ft void
.Fo BN_CTX_init
.Fa "BN_CTX *c"
.Fc
.Sh DESCRIPTION
A
.Vt BN_CTX
is a structure that holds
.Vt BIGNUM
temporary variables used by library functions.
Since dynamic memory allocation to create
.Vt BIGNUM Ns s
is rather expensive when used in conjunction with repeated subroutine
calls, the
.Vt BN_CTX
structure is used.
.Pp
.Fn BN_CTX_new
allocates and initializes a
.Vt BN_CTX
structure.
.Pp
.Fn BN_CTX_free
frees the components of the
.Vt BN_CTX ,
and if it was created by
.Fn BN_CTX_new ,
also the structure itself.
If
.Xr BN_CTX_start 3
has been used on the
.Vt BN_CTX ,
.Xr BN_CTX_end 3
must be called before the
.Vt BN_CTX
may be freed by
.Fn BN_CTX_free .
.Pp
.Fn BN_CTX_init
(deprecated) initializes an existing uninitialized
.Vt BN_CTX .
This should not be used for new programs.
Use
.Fn BN_CTX_new
instead.
.Sh RETURN VALUES
.Fn BN_CTX_new
returns a pointer to the
.Vt BN_CTX .
If the allocation fails, it returns
.Dv NULL
and sets an error code that can be obtained by
.Xr ERR_get_error 3 .
.Pp
.Fn BN_CTX_init
and
.Fn BN_CTX_free
return no value.
.Sh SEE ALSO
.Xr bn 3 ,
.Xr BN_add 3 ,
.Xr BN_CTX_start 3 ,
.Xr ERR_get_error 3
.Sh HISTORY
.Fn BN_CTX_new
and
.Fn BN_CTX_free
are available in all versions on SSLeay and OpenSSL.
.Fn BN_CTX_init
was added in SSLeay 0.9.1b.
